Use case: UART TX in DMA mode ¶
Sequence diagram ¶
Code snippet ¶
|
HAL1 |
HAL2 |
|---|---|
#define DATA_TO_SEND_SIZE 255
UART_HandleTypeDef huart;
uint8_t aTxBuffer[DATA_TO_SEND_SIZE] = " **** UART Communication **** ";
/* Ensure that all required peripherals
(USART, GPIO,NVIC,DMA etc.) are configured properly
/*
...
*/
/* UART register Transmit complete user callback */
HAL_UART_RegisterCallback(&huart, HAL_UART_TX_CB_ID,
UART_TxCpltCallback);
/* Start a UART Process in dma mode */
HAL_UART_Transmit_DMA(&huart, aTxBuffer,
DATA_TO_SEND_SIZE)
|
#define DATA_TO_SEND_SIZE 255
hal_uart_handle_t huart;
uint8_t aTxBuffer[DATA_TO_SEND_SIZE] = " **** UART Communication **** ";
/* Ensure that all required peripherals
(USART, GPIO,NVIC,DMA etc.) are configured properly
/*
...
*/
/* UART register Transmit complete user callback */
HAL_UART_RegisterTxCpltCallback(&huart, UART_TxCpltCallback);
/* Start a UART Process in dma mode */
HAL_UART_Transmit_DMA(&huart, aTxBuffer,
DATA_TO_SEND_SIZE)
|
Key changes ¶
HAL2 DMA start uses
HAL_DMA_StartPeriphXfer_IT_Opt()(optional interrupt generation) instead ofHAL_DMA_Start_IT().HAL2 uses byte-oriented transfer count fields (for example
tx_xfer_count).

